Shared memory has long been used for communication, such as interprocess communication, in environments having shared memory. The memory is accessible by a plurality of processes and those processes use queues resident within the shared memory for communication. For example, each process has at least one queue to be used for communication and other processes access a particular process' queue to communicate with that process. Since multiple processes access the same queue, locking mechanisms are used to protect the integrity of the queue. Lock protection, however, causes contention for the queues, which is costly in terms of performance.
To improve performance, it is possible to have dedicated queues in which each process that wishes to communicate with another process has a dedicated queue for that other process. However, this dramatically increases the number of queues needed and reduces scalability within the environment.
Based on the foregoing, a need still exists for a more efficient mechanism for using shared memory for communication. For example, a need exists for an improved capability that eliminates locking, while not dramatically increasing the number of queues needed for communication.